﻿///////////////////////////////////////////////////////////////
//  namespace основной для Central
//  автор:          Central
//  зависит от:     central.js
//                  underscore.js
///////////////////////////////////////////////////////////////

var central = central || {};





///////////////////////////////////////////////////////////////
//  внутрненние namespaces для Central
//  автор:          Central
//  зависит от:     central.js
///////////////////////////////////////////////////////////////

(function (central) {

    "use strict";





    ///////////////////////////////////////////////////////////////
    //  namespace для контролов в системе Central
    //  автор:          Central
    //  зависит от:     central.js
    ///////////////////////////////////////////////////////////////

    central.controls = {};






    ///////////////////////////////////////////////////////////////
    //  namespace для утилит в системе Central
    //  автор:          Central
    //  зависит от:     central.js
    ///////////////////////////////////////////////////////////////

    central.utils = {};





    ///////////////////////////////////////////////////////////////
    //  framework namespace в системе Central
    //  автор:          Central
    //  зависит от:     central.js
    ///////////////////////////////////////////////////////////////

    central.fw = {};









    ///////////////////////////////////////////////////////////////
    //  класс для представления QueryParams
    //  автор:          Central
    //  зависит от:     central.js
    ///////////////////////////////////////////////////////////////

    //central.fw.jsonQueryParams = function (entityName) {
    //    var self = this,
    //        entityName = entityName,
    //        filters = [],
    //        sorters = [],
    //        groups = [];

    //    return {
    //        qfilters: filters,
    //        qsorters: sorters,
    //        qgroups: groups
    //    }
    //};

})(central);





///////////////////////////////////////////////////////////////
//  DataServices для Central
//  автор:          Central
//  зависит от:     central.js
//                  jQuery.js
///////////////////////////////////////////////////////////////

(function (central) {

    "use strict";

    var baseUrl = "/home/",
        serviceUrl = function (method) { return baseUrl + method; };

    central.fw.ajaxService = function () {
        var getAjaxJson = function (method, jsonIn, callback) {
            $.ajax({
                url: serviceUrl(method),
                data: ko.toJS(jsonIn),
                type: 'GET',
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                success: function (json) {
                    callback(json);
                },
                error: function (jqXHR, textStatus) {
                    if (confirm(jqXHR.status + " " + textStatus + ":" + jqXHR.statusText)) {
                        alert(jqXHR.responseText);
                    }
                }
            });
        },
            postAjaxJson = function (method, jsonIn, callback) {
                $.ajax({
                    url: serviceUrl(method),
                    data: ko.toJS(jsonIn),
                    type: 'POST',
                    dataType: 'json',
                    contentType: 'application/json; charset=utf-8',
                    success: function (json) {
                        callback(json);
                    },
                    error: function (jqXHR, textStatus) {
                        if (confirm(jqXHR.status + " " + textStatus + ":" + jqXHR.statusText)) {
                            alert(jqXHR.responseText);
                        }
                    }
                });
            }
        return {
            getJson: getAjaxJson,
            postJson: postAjaxJson
        };

    }();

})(central);